package fr.mcc.ginco.exports.skos; import java.util.List; import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import com.hp.hpl.jena.ontology.DatatypeProperty; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.vocabulary.RDFS; import fr.mcc.ginco.beans.CustomConceptAttribute; import fr.mcc.ginco.beans.ThesaurusConcept; import fr.mcc.ginco.services.ICustomConceptAttributeService; import fr.mcc.ginco.skos.namespaces.GINCO; @Component("skosCustomConceptAttributeExporter") public class SKOSCustomConceptAttributeExporter { @Inject @Named("customConceptAttributeService") private ICustomConceptAttributeService customConceptAttributeService; public Model exportCustomConceptAttributes(ThesaurusConcept concept, Model model, Resource conceptResource, OntModel ontModel) { List<CustomConceptAttribute> attributes = customConceptAttributeService .getAttributesByEntity(concept); DatatypeProperty customAttrOnt = ontModel.createDatatypeProperty(GINCO .getURI() + "CustomConceptAttribute"); Literal l = ontModel.createLiteral("CustomConceptAttribute"); customAttrOnt.addLabel(l); for (CustomConceptAttribute attribute : attributes) { if (attribute.getType().getExportable()) { Resource customAttrRes = model.createResource(GINCO.getURI() + attribute.getType().getCode(), GINCO.CUSTOM_CONCEPT_ATTRIBUTE); model.add(customAttrRes, RDFS.label, StringEscapeUtils.unescapeXml(attribute.getType() .getCode())); if (StringUtils.isNotEmpty(attribute.getLexicalValue())) { Property customAttributeProperty = model.createProperty(GINCO .getURI() + attribute.getType().getCode()); model.add(conceptResource, customAttributeProperty, attribute.getLexicalValue()); } } } return model; } }